// 导入express
const express = require('express');

// 创建express服务器实例
const app = express();

// 导入并配置cors中间件
const cors = require('cors');
app.use(cors());

// 解析表单数据的中间件
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// 一定在解析路由前，配置解析token的中间件
const expressJWT = require('express-jwt');
const config = require('./config');
 
app.use(expressJWT({ secret: config.jwtSecretKey }).unless({path: [/^\/api\//,/^\/admin\//] }));

// token认证失败全局错误处理中间件
app.use((err, req, res, next) => {
    // 捕获身份认证失败的错误
    if (err.name === 'UnauthorizedError') {
        return res.status(401).send({ status: 1, message: '身份认证失败！' });
    }
    // 其他错误
    res.status(500).send({ status: 1, message: err.message });
}); 

// 全局的路由
// 导入并使用用户路由模块
const userRouter = require('./router/user');
app.use('/api', userRouter);

// 导入并使用用户信息路由模块
const userInfoRouter = require('./router/userInfo');
app.use('/myinfo', userInfoRouter);

// 导入并使用博客分类路由模块
const columnRouter = require('./router/column');
app.use('/myinfo/blog', columnRouter);

// 点赞路由模块
const thumbRouter = require('./router/thumb');
app.use('/myinfo/blog', thumbRouter);

// 标签路由模块
const tagRouter = require('./router/tag');
app.use('/myinfo/blog',tagRouter)

// 加载图片路由模块
const pictureRouter = require('./router/picture');
app.use('/myinfo/blog', pictureRouter);

// 导入并使用文章路由模块
const postRouter = require('./router/post');
app.use('/myinfo/blog', postRouter);

// 导入并使用评论路由模块
const commentRouter = require('./router/comment');
app.use('/myinfo/blog', commentRouter);

// 管理员路由模块
const adminRouter = require('./router/admin');
app.use('/api', adminRouter);

// 启动服务器
app.listen(3000,()=>{
    console.log('服务器启动成功!!');
})








